package com.pentofab.payrollmanagement.database;

import java.util.ArrayList;
import java.util.HashMap;

import com.pentofab.payrollmanagement.dao.model.EsiPfBonus;
import com.pentofab.payrollmanagement.dao.model.Holiday;
import com.pentofab.payrollmanagement.dao.model.PTSlab;
import com.pentofab.payrollmanagement.dao.model.SalaryAdvance;
import com.pentofab.payrollmanagement.dao.model.SalaryProfile;
import com.pentofab.payrollmanagement.dao.model.SalaryStracture;
import com.pentofab.payrollmanagement.exception.BusinessException;
import com.pentofab.payrollmanagement.exception.ExceptionMsg;

public interface SalaryRepository extends ExceptionMsg {

	public ArrayList<SalaryProfile> getSalaryProfiles() throws Exception;
	public void addSalaryProfile(SalaryProfile salaryProfile) throws Exception;
	public void modifySalaryProfile(SalaryProfile salaryProfile) throws Exception;
	public void deleteSalaryProfile(String profieName) throws Exception;
	
	
	public ArrayList<SalaryAdvance> getSalaryAdvance(String empId) throws Exception;
	public void appliForAdvance(SalaryAdvance salaryAdvance) throws Exception;
	public void recoverAmount(String empId,String rowNo,double amount) throws BusinessException;
	public void deleteSalaryAdvance(String empId,int rowNum) throws Exception;
	
	public ArrayList<PTSlab> getPTSlab() throws Exception;
	public void addPTSlab(String ptTaxAmount, String maxLimit) throws Exception;
	public void updatePTSlab(String ptTaxAmount, String maxLimit) throws Exception;
	public void deletePTSlab( String maxLimit) throws Exception;
	public double getPT(String netPay) throws Exception;
	
	
	public ArrayList<String> getAllEmpSalaryStracture() throws Exception;
	public SalaryStracture getSalaryStractureForEmp(String empId) throws Exception;
	public void insertSalaryStracture(SalaryStracture salaryStracture) throws Exception;
	public void updateSalaryStracture(SalaryStracture salaryStracture) throws Exception;
	public ArrayList<HashMap<String, String>> getSalaryReport(String employeeId) throws Exception;
	
	public EsiPfBonus getEsiPfBonus() throws Exception;
	public void setEsiPfBonus(EsiPfBonus esiPfBonus) throws Exception;
	
	public HashMap<String, String> getComputedSalary(String empId,String month,String year,String company,String dept,String unit,String Design) throws Exception;
	public void insertOrUpdatePaidSalaryInfo(String empId, String month, String year,SalaryStracture salaryStracture) throws Exception;
}
